#!/bin/sh
# PCP QA Test No. 802
# github-#56 - memleak in libpcp_pmda with dynamic metrics
#
# Copyright (c) 2015 Ken McDonell.  All Rights Reserved.
#

seq=`basename $0`
echo "QA output created by $seq"

# get standard environment, filters and checks
. ./common.product
. ./common.filter
. ./common.check

_check_valgrind

status=1	# failure is the default!
trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15

# real QA test starts here

VALGRIND=`which valgrind`

# copied from _run_valgrind() ...
__version=`valgrind --version | sed -e 's/valgrind-//'`
if [ -f valgrind-suppress-$__version ]
then
    __extra="--suppressions=valgrind-suppress-$__version"
    echo "Warning: using extra $__extra" >>$seq_full
else
    __extra=''
fi

# need -q 45 because valgrind with all these options sometimes takes much
# longer to startup than the default credentials timeout of 3 seconds,
# especially on slow VMs
#
dbpmda -f -q 45 -ie 2>$tmp._valgrind.err >$tmp._valgrind.out <<End-of-File
open pipe $VALGRIND --leak-check=full --read-var-info=yes --gen-suppressions=all --suppressions=valgrind-suppress $__extra --log-file=$tmp._valgrind pmdas/github-56/pmdatrivial
children trivial
exit
End-of-File

sleep 1

# from _run_valgrind() ...
#
echo "=== std out ===" | tee -a $seq_full
cat $tmp._valgrind.out >>$seq_full
sed <$tmp._valgrind.out \
    -e "s@$tmp@TMP@g" \
    -e "s@$VALGRIND@VALGRIND@" \
    -e '/VALGRIND/{
s/ --[a-z][^ ]*//g
s/  */ /g
}' \
    #end
echo "=== std err ===" | tee -a $seq_full
cat $tmp._valgrind.err >>$seq_full
sed < $tmp._valgrind.err \
    -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z]  *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' \
    -e 's/trivial([0-9]*)/trivial(PID)/'
echo "=== valgrind report ===" >>$seq_full
cat $tmp._valgrind >>$seq_full
echo "=== filtered valgrind report ==="
_filter_valgrind <$tmp._valgrind

# success, all done
status=0

exit
